home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / termsorc.lha / Extras / Source / gtlayout-source.lha / LTP_ImageClass.c < prev    next >
C/C++ Source or Header  |  1995-09-29  |  3KB  |  146 lines

  1. /*  GadTools layout toolkit
  2. **
  3. **  Copyright © 1993-1995 by Olaf `Olsen' Barthel
  4. **  Freely distributable.
  5. */
  6.  
  7. #include "gtlayout_global.h"
  8.  
  9. ULONG __regargs
  10. LTP_ImageClassDraw(struct Image *image,struct impDraw *drawMsg,ImageInfo *imageInfo)
  11. {
  12.     LTP_DrawBox(drawMsg -> imp_RPort,drawMsg -> imp_DrInfo,image -> LeftEdge + drawMsg -> imp_Offset . X,image -> TopEdge + drawMsg -> imp_Offset . Y,image -> Width,image -> Height,drawMsg -> imp_State == IDS_SELECTED,drawMsg -> imp_State == IDS_DISABLED,imageInfo);
  13.  
  14.     return(TRUE);
  15. }
  16.  
  17.  
  18. /*****************************************************************************/
  19.  
  20.  
  21. ULONG __regargs
  22. LTP_ImageClassErase(struct Image *image,struct impErase *eraseMsg)
  23. {
  24.     LONG left;
  25.     LONG top;
  26.  
  27.     left    = eraseMsg -> imp_Offset . X + image -> LeftEdge;
  28.     top    = eraseMsg -> imp_Offset . Y + image -> TopEdge;
  29.  
  30.     EraseRect(eraseMsg -> imp_RPort,left,top,left + image -> Width - 1,top + image -> Height - 1);
  31.  
  32.     return(TRUE);
  33. }
  34.  
  35.  
  36. /*****************************************************************************/
  37.  
  38. ULONG __regargs
  39. LTP_ImageClassNew(struct IClass *class,Object *object,struct opSet *SetMethod)
  40. {
  41.     struct TagItem *Item;
  42.  
  43.     if(Item = FindTagItem(IIA_ImageType,SetMethod -> ops_AttrList))
  44.     {
  45.         struct Image *NewImage;
  46.  
  47.         if(NewImage = (struct Image *)DoSuperMethodA(class,object,(Msg)SetMethod))
  48.         {
  49.             struct ImageInfo    *MoreInfo = INST_DATA(class,NewImage);
  50.             struct TagItem        *List = SetMethod -> ops_AttrList;
  51.  
  52.             memset(MoreInfo,0,sizeof(struct ImageInfo));
  53.  
  54.             MoreInfo -> ImageType = Item -> ti_Data;
  55.  
  56.             while(Item = NextTagItem(&List))
  57.             {
  58.                 switch(Item -> ti_Tag)
  59.                 {
  60.                     case IIA_GlyphWidth:
  61.  
  62.                         MoreInfo -> GlyphWidth = Item -> ti_Data;
  63.                         break;
  64.  
  65.                     case IIA_GlyphHeight:
  66.  
  67.                         MoreInfo -> GlyphHeight = Item -> ti_Data;
  68.                         break;
  69.  
  70.                     case IIA_Lines:
  71.  
  72.                         MoreInfo -> Lines = (STRPTR *)Item -> ti_Data;
  73.                         break;
  74.  
  75.                     case IIA_LineCount:
  76.  
  77.                         MoreInfo -> LineCount = Item -> ti_Data;
  78.                         break;
  79.  
  80.                     case IIA_KeyStroke:
  81.  
  82.                         MoreInfo -> KeyStroke = (STRPTR)Item -> ti_Data;
  83.                         break;
  84.  
  85.                     case IIA_Emboss:
  86.  
  87.                         MoreInfo -> Emboss = Item -> ti_Data;
  88.                         break;
  89.  
  90.                     case IIA_Label:
  91.  
  92.                         MoreInfo -> Label = (STRPTR)Item -> ti_Data;
  93.                         break;
  94.                 }
  95.             }
  96.  
  97.             return((ULONG)NewImage);
  98.         }
  99.     }
  100.  
  101.     return(NULL);
  102. }
  103.  
  104. ULONG __regargs
  105. LTP_ImageClassGet(Class *class,Object *object,struct opGet *GetMsg)
  106. {
  107.     if(GetMsg -> opg_AttrID == IA_SupportsDisable)
  108.     {
  109.         *GetMsg -> opg_Storage = TRUE;
  110.  
  111.         return(TRUE);
  112.     }
  113.     else
  114.         return(DoSuperMethodA(class,object,GetMsg));
  115. }
  116.  
  117. /*****************************************************************************/
  118.  
  119.  
  120. ULONG __saveds __asm
  121. LTP_ImageDispatch(register __a0 struct IClass *class,register __a2 Object *object,register __a1 Msg msg)
  122. {
  123.     switch(msg -> MethodID)
  124.     {
  125.         case IM_ERASE:
  126.  
  127.             return(LTP_ImageClassErase((struct Image *)object,(struct impErase *)msg));
  128.  
  129.         case IM_DRAW:
  130.  
  131.             return(LTP_ImageClassDraw((struct Image *)object,(struct impDraw *)msg,(ImageInfo *)INST_DATA(class,object)));
  132.  
  133.         case OM_NEW:
  134.  
  135.             return(LTP_ImageClassNew(class,object,(struct opSet *)msg));
  136.  
  137.         case OM_GET:
  138.  
  139.             return(LTP_ImageClassGet(class,object,(struct opGet *)msg));
  140.  
  141.         default:
  142.  
  143.             return(DoSuperMethodA(class,object,msg));
  144.     }
  145. }
  146.